接下來這一篇就來實作 index 和 show,並且過程中也會提到關聯性的一些小技巧
index
*PostsController
namespace App\Http\Controllers;vv
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Post;
class PostsController extends Controller
{
public function index()
{
return response(['data' => Post::get()]);
}
}
然而,若要連該貼文所屬的使用者所有資料( 當然不含 hidden attribute )一起印出來呢??我們可以用以下寫法:
Post::with('user')->get()
甚至可以限定印出的使用者只要某幾個欄位
Post::with('user:id,name')
show
show method 的原理其實也跟之前 user 的部份雷同,此處就不再贅述,並且同樣的可以應用 eager loading 的方式
*PostsController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Post;
class PostsController extends Controller
{
public function show($id)
{
// 找尋該筆資料,連同 user 的部份一起印出
$post = Post::with('user')->find($id);
if(!is_null($post)){
return response(['data' => $post]);
}
return response(['message' => 'Post not found']);
}
}
index
一般取法
eager loading ( user 的所有欄位 )
eager loading ( user 的部份欄位 )
show
找不到貼文
取得某篇貼文 ( 含 user 的資料 )
參考資料: